1. Field
The present invention generally relates to entropy encoding of video data. The present invention can be used, amongst other things, to increase the speed of implementation of context-based adaptive binary arithmetic coding (CABAC) in H.264/AVC video encoders.
2. Background
The increasing demand to incorporate video data in transmission and storage systems and the desire to improve the quality of video in such systems have prompted rapid advancement in video compression techniques. During the last decade, many ISO/ITU standards on video compression (e.g., MNPEG.1, MPEG2, MPEG.4, H.263, and H.2.64) have evolved. These standards exploit the spatio-temporal correlation in the video data and utilize entropy coding techniques to achieve high compression ratios. Entropy coding is a loss-less compression process that is based on the statistical properties of data. Entropy coders assign codes to symbols so as to match code lengths with the probabilities of occurrence of the symbols. The basic idea is to express the most frequently occurring symbols with the least number of bits.
Some of the commonly used entropy coding techniques used in video compression include Golomb coding, Hauffman coding and Arithmetic coding. Arithmetic coding combined with context-adaptive modeling techniques has shown better compression results compared to the other forms of entropy coding. Owing to its higher coding efficiency, several video coding standards, including the latest in the line H.264/AVC video standard, support Arithmetic coding as a higher compression mode. The H.264/AVC video standard supports a base-line entropy coding method known as Context Adaptive Variable Length Coding (CAVLC) and a high efficiency entropy coding method known as Context-based Adaptive Binary Arithmetic Coding (CABAC). CABAC offers a different compression-complexity tradeoff at a higher coding efficiency and higher complexity level compared to the base-line CAVLC. Some important properties of CABAC include the binary nature of symbols, adaptive context modeling, and a table driven arithmetic coding engine.
Despite its higher coding efficiency, one main disadvantage of Arithmetic coding lies in its high computational cost. This issue relating to high computational cost applies to CABAC as well. The CABAC encoding algorithm includes three basic steps: binarization, context modeling, and binary arithmetic encoding. In the binarization step, a non-binary syntax element is mapped to a unique binary sequence. In the H.264/AVC standard, the binarization schemes are either manually chosen or are obtained by a combination of four elementary code types. The four elementary code types include unary codes, truncated unary codes, kth order Exp-Golomb codes and fixed length codes. In conventional systems, each bit of the binary sequence is passed through a context modeling stage, where a context-dependent probability model is selected. The bit along with its model is then passed on to the arithmetic encoding engine, where coding of the bit takes place and the model gets updated.
Although the binary nature of CABAC reduces its model-update overhead, its inherent sequential nature and extensive memory accesses make its computational requirements high. The increased computational complexity hampers the adoption of CABAC in solutions running on low powered DSPs (digital signal processors) and other processing devices. Keeping in view the fact that H.264/AVC is expected to supercede all previous video coding standards, it may be appreciated that it would be desirable to develop methods that reduce the implementation complexity of the CABAC algorithm.